package com.ftx.controller.test.spring.ext;

import com.ftx.controller.test.annotation.importTest.Blue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

/**
 * Created by fengtingxin on 2020/6/2.
 *
 * 扩展原理：
 * BeanPostProcessor  :bean的后置处理器，bean创建对象初始化前后拦截工作
 *
 * BeanFactoryPostProcessor：在beanfactory标准初始化之后调用，来定制和修改beanfactory的，所有的bean定义已经保存加载到beanfactory，但是还bean的实例还未创建
 *
 *
 *
 * 执行过程：
 *  1。ioc容器创建对象
 *  2.invokeBeanFactoryPostProcessors  执行BeanFactoryPostProcessor
 *      如何找到所有的BeanFactoryPostProcessors
 *          1.String[] postProcessorNames =
 * 				beanFactory.getBeanNamesForType(BeanFactoryPostProcessor.class, true, false);
 * 			2.执行并循环 postProcessor.postProcessBeanFactory方法
 * 		    3.在初始化创建finishBeanFactoryInitialization 之前
 *
 *
 *
 * BeanDefinitionRegistryPostProcessor extends BeanFactoryPostProcessor
 *  执行时机：
 *      在所有的bean定义信息将要被加载，bean实例还未创建
 *
 *
 */
@ComponentScan("com.ftx.controller.test.spring.ext")
@Configuration
public class ExtConfig {


    @Bean
    public Blue blue(){
        return new Blue();
    }
}
